using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace MyProject.Persona
{
    public class PlayerController_2 : MonoBehaviour
    {
        private int groundMask;
        
        float varJumpTimer;
        float varJumpSpeed;
        int moveX;
        private float maxFall;
        private float faseMaxFall;

        private bool onGround;
        private bool wasOnGround;

        private void Start()
        {
            groundMask = LayerMask.GetMask("Ground");
        }
        
        // using System;
// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;
// using UnityEngine.InputSystem;
//
// namespace MyProject.Persona
// {
//     public class PlayerController : MonoBehaviour
//     {
//         private float varJumpTimer;
//         private float varJumpSpeed;
//
//         private float maxFall;
//         
//         [Header("移动相关")] public float speed;
//         public float jumpForce;
//         [HideInInspector]public Rigidbody2D rb;
//         public PlayerInput _playerInput;
//         private Vector2 _moveDir;
//         private bool _faceDir;
//         public PhysicsCheck physicsCheck; //物理检测
//
//         [Header("跳跃相关")] [SerializeField] private float pressDownTime;
//
//         [Header("人格切换")] public Personas curPersona;
//
//         private JumpCheck _jumpCheck { get; set; } //土狼跳跃
//
//         //技能相关
//         private bool _releaseSkill;
//         private float _releaseSkillTime;
//
//         [Header("跳跃预输入")] [SerializeField] private bool inputAdvance;
//         [HideInInspector]public bool startAdvance; //开始预输入
//         private Vector2 _jumpHigh; //跳到的最高点
//         [HideInInspector]public bool canInputAdvance;
//
//         private void Awake()
//         {
//             _playerInput = new PlayerInput();
//             rb = GetComponent<Rigidbody2D>();
//             physicsCheck = GetComponent<PhysicsCheck>();
//             
//             _playerInput.Gameplay.SwitchPerson.started += SwitchPersona;
//             _playerInput.Gameplay.ReleaseSkill.started += ReleaseSkill;
//         }
//
//         private void Start()
//         {
//             // curPersona = Persona.Blue;
//             this._jumpCheck = new JumpCheck(this, Constants.EnableJumpGrace);
//         }
//
//         private void OnEnable()
//         {
//             //TODO:做完主菜单记得把这个关掉
//             _playerInput.Enable();
//         }
//
//         private void OnDisable()
//         {
//             _playerInput.Disable();
//         }
//
//         private void Update()
//         {
//             _moveDir = _playerInput.Gameplay.Move.ReadValue<Vector2>();
//
//             //jump
//             {
//                 //土狼跳跃
//                 _jumpCheck.UpdateJumpCheck();
//
//                 //var jump
//                 {
//                     if (varJumpTimer > 0)
//                     {
//                         varJumpTimer -= Time.deltaTime;
//                     }
//
//                     if (this.varJumpTimer > 0)
//                     {
//                         if (GameInput.jump.Checked())
//                         {
//                             rb.velocity = new Vector2(rb.velocity.x, Math.Max(rb.velocity.y, varJumpSpeed));
//                             _jumpHigh = new Vector2(0,transform.position.y);
//                         }
//                         else
//                         {
//                             varJumpTimer = 0;
//                         }
//                     }
//                 }
//                 if (GameInput.jump.Press())
//                 {
//                     if (_jumpCheck.AllowJump())
//                     {
//                         Jump();
//                     }
//                     else
//                     {
//                         AdvanceJump();
//                     }
//                 }
//
//                 if (inputAdvance)
//                 {
//                     if (canInputAdvance && physicsCheck.isGround)
//                     {
//                         Jump();
//                         canInputAdvance = false;
//                     }
//                 }
//             }
//         }
//
//         private void FixedUpdate()
//         {
//             if(!SkillManger.instance.isDash)
//                 Move();
//         }
//
//         private void Move()
//         {
//             rb.velocity = new Vector2(speed * Time.deltaTime * _moveDir.x, rb.velocity.y);
//
//             int faceDir = (int)transform.localScale.x;
//             if (_moveDir.x < 0 )
//                 faceDir = -1;
//             else if (_moveDir.x > 0 )
//                 faceDir = 1;
//
//             transform.localScale = new Vector3(faceDir, 1, 1);
//         }
//         
//         // //计时器
//         // private IEnumerator SkillTimer(float shouldWaitTime)
//         // {
//         //     yield return new WaitForSeconds(shouldWaitTime);
//         //     _releaseSkill = false;
//         // }
//
//         //按键方面详情
//         private void Jump()
//         {
//             GameInput.jump.ConsumeBuffer();
//             _jumpCheck.ResetTime();
//             varJumpSpeed = Constants.JumpSpeed;
//             varJumpTimer = Constants.VarJumpTime;
//             rb.velocity = new Vector2(rb.velocity.x, Math.Max(rb.velocity.y, varJumpSpeed));
//             _jumpHigh = new Vector2(0,transform.position.y);
//             startAdvance = true;
//             // _rb.AddForce(jumpForce * transform.up, ForceMode2D.Impulse);
//         }
//
//         //预输入
//         private void AdvanceJump()
//         {
//             startAdvance = false;
//             Debug.Log("rb.velocity.y");
//             if (rb.velocity.y < 0)
//             {
//                 Debug.Log("2");
//                 if (transform.position.y <= _jumpHigh.y)
//                 {
//                     canInputAdvance = true; 
//                     Debug.Log(canInputAdvance);
//                 }
//             }
//         }
//         
//         private void SwitchPersona(InputAction.CallbackContext obj)
//         {
//             //TODO:切换人格
//         }
//         
//         private void ReleaseSkill(InputAction.CallbackContext obj)
//         {
//             // _releaseSkill = true;
//             // StartCoroutine(SkillTimer(SkillManger.Instance.ReleaseSkill(curPersona)));
//             SkillManger.Instance.ReleaseSkill(curPersona);
//         }
//         
//         public float MaxFall
//         {
//             get => maxFall;
//             set => maxFall = value;
//         }
//         
//     }
// }


    }
}
